package com.itheima.controller;

import cn.hutool.core.util.ObjectUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.Collections;

@Controller
public class FileUploadController {

    @RequestMapping(value = "/fileupload")
    //参数中定义MultipartFile参数，用于接收页面提交的type=file类型的表单，要求表单名称与参数名相同
    public String fileupload(MultipartFile[] multipartFiles, HttpServletRequest request) throws IOException {
            if(multipartFiles.length>0) {
                for (MultipartFile file : multipartFiles) {
                    System.out.println("file upload is running ..." + file);
                    //MultipartFile参数中封装了上传的文件的相关信息
                    System.out.println(file.getSize());
                    System.out.println(file.getBytes().length);
                    System.out.println(file.getContentType());
                    System.out.println(file.getName());
                    System.out.println(file.getOriginalFilename());
                    System.out.println(file.isEmpty());
                    //首先判断是否是空文件，也就是存储空间占用为0的文件

                    //如果大小在范围要求内正常处理，否则抛出自定义异常告知用户（未实现）
                    //获取原始上传的文件名，可以作为当前文件的真实名称保存到数据库中备用
                    String fileName = file.getOriginalFilename();
                    System.out.println("fileName..." + fileName);
                    //设置保存的路径
                    String realPath = request.getServletContext().getRealPath("/images");
                    System.out.println("realPath.." + realPath);
                    //保存文件的方法，指定保存的位置和文件名即可，通常文件名使用随机生成策略产生，避免文件名冲突问题
                    file.transferTo(new File(realPath, file.getOriginalFilename()));


                }
            }

        return "page.jsp";

    }
}
